#
# This is the configuration file for sleepgraph. It contains
# all the tool arguments so that they don't have to be given on the
# command line. It also includes advanced settings for functions
# and kprobes. It is run like this
#
#    sudo ./sleepgraph.py -config thisfile.txt
#

[Settings]

# Verbosity
# print verbose messages (default: false)
verbose: false

# Suspend Mode
# e.g. standby, mem, freeze, disk (default: mem)
mode: mem

# Automatic Wakeup
# Use rtcwake to autoresume after X seconds, or off to disable (default: 15)
rtcwake: 15

# Add Logs
# add the dmesg and ftrace log to the html output (default: false)
addlogs: false

# Display function calls
# graph source functions in the timeline (default: false)
dev: true

# Callgraph
# gather detailed ftrace callgraph data on all timeline events (default: false)
callgraph: false

# Back to Back Suspend/Resume
# Run two suspend/resumes back to back (default: false)
x2: false

# Back to Back Suspend Delay
# Time delay between the two test runs in ms (default: 0 ms)
x2delay: 0

# Minimum Device Length
# graph only devices longer than min in the timeline (default: 0.001 ms)
mindev: 1

# Minimum Callgraph Length
# provide callgraph data for blocks longer than min (default: 0.001 ms)
mincg: 1

# Suspend/Resume Gap
# insert a small visible gap between suspend and resume on the timeline (default: false)
srgap: false

# Output Directory Format
# output folder for html, ftrace, and dmesg. Use {date} and {time} for current values
output-dir: suspend-{hostname}-{date}-{time}-custom

# Override default timeline entries
# Do not use the internal default functions for timeline entries (default: false)
# Set this to true if you intend to only use the ones defined in this config
override-timeline-functions: true

# Override default dev timeline entries
# Do not use the internal default functions for dev timeline entries (default: false)
# Set this to true if you intend to only use the ones defined in this config
override-dev-timeline-functions: true

[timeline_functions_x86_64]
#
# Function calls to display in the timeline alongside device callbacks.
# The tool has an internal set of these functions which should cover the
# whole of kernel execution, but you can append or override here.
#
# This is a list of kprobes which use both symbol data and function arg data.
# The function calls are displayed on the timeline alongside the device blocks.
# The args are pulled directly from the stack using this architecture's registers
# and stack formatting. Three pieces of info are required. The function name,
# a format string, and an argument list
#
# Entry format:
#
#   function: format{fn_arg1}_{fn_arg2} fn_arg1 fn_arg2 ... [color=purple]
#
# Required Arguments:
#
#   function: The symbol name for the function you want probed, this is the
#             minimum required for an entry, it will show up as the function
#             name with no arguments.
#
#       example: _cpu_up:
#
# Optional Arguments:
#
#   format: The format to display the data on the timeline in. Use braces to
#           enclose the arg names.
#
#       example: CPU_ON[{cpu}]
#
#   color: The color of the entry block in the timeline. The default color is
#          transparent, so the entry shares the phase color. The color is an
#          html color string, either a word, or an RGB.
#
#       example: [color=#CC00CC]
#
#   arglist: A list of arguments from registers/stack addresses. See URL:
#            https://www.kernel.org/doc/Documentation/trace/kprobetrace.rst
#
#       example: cpu=%di:s32
#
# Example: Display cpu resume in the timeline
#
#       _cpu_up: CPU_ON[{cpu}] cpu=%di:s32 [color=orange]
#
_cpu_down: CPU_OFF[{cpu}] cpu=%di:s32
_cpu_up: CPU_ON[{cpu}] cpu=%di:s32
sys_sync:
pm_prepare_console:
pm_notifier_call_chain:
freeze_processes:
freeze_kernel_threads:
pm_restrict_gfp_mask:
acpi_suspend_begin:
suspend_console:
acpi_pm_prepare:
syscore_suspend:
arch_enable_nonboot_cpus_end:
syscore_resume:
acpi_pm_finish:
resume_console:
acpi_pm_end:
pm_restore_gfp_mask:
thaw_processes:
pm_restore_console:

[dev_timeline_functions_x86_64]
#
# Dev mode function calls to display inside timeline entries
#
# This is a list of kprobes which use both symbol data and function arg data.
# The function calls are displayed on the timeline alongside the device blocks.
# The args are pulled directly from the stack using this architecture's registers
# and stack formatting. Three pieces of info are required. The function name,
# a format string, and an argument list
#
# Entry format:
#
#   function: format{fn_arg1}_{fn_arg2} fn_arg1 fn_arg2 ... [color=purple]
#
# Required Arguments:
#
#   function: The symbol name for the function you want probed, this is the
#             minimum required for an entry, it will show up as the function
#             name with no arguments.
#
#       example: ata_eh_recover:
#
# Optional Arguments:
#
#   format: The format to display the data on the timeline in. Use braces to
#           enclose the arg names.
#
#       example: ata{port}_port_reset
# 
#   color: The color of the entry block in the timeline. The default color is
#          transparent, so the entry shares the phase color. The color is an
#          html color string, either a word, or an RGB.
#
#       example: [color=#CC00CC]
#
#   arglist: A list of arguments from registers/stack addresses. See URL:
#            https://www.kernel.org/doc/Documentation/trace/kprobetrace.rst
#
#       example: port=+36(%di):s32
#
# Example: Display ATA port reset as ataN_port_reset in the timeline
#
#       ata_eh_recover: ata{port}_port_reset port=+36(%di):s32
#
msleep: msleep time=%di:s32
schedule_timeout_uninterruptible: schedule_timeout_uninterruptible timeout=%di:s32
schedule_timeout: schedule_timeout timeout=%di:s32
usleep_range: usleep_range min=%di:s32 max=%si:s32
__const_udelay: udelay loops=%di:s32
__mutex_lock_slowpath: mutex_lock_slowpath
ata_eh_recover: ata_eh_recover port=+36(%di):s32
acpi_os_stall:
acpi_resume_power_resources:
acpi_ps_parse_aml:
ext4_sync_fs:
i915_gem_resume:
i915_restore_state:
intel_opregion_setup:
g4x_pre_enable_dp:
vlv_pre_enable_dp:
chv_pre_enable_dp:
g4x_enable_dp:
vlv_enable_dp:
intel_hpd_init:
intel_opregion_register:
intel_dp_detect:
intel_hdmi_detect:
intel_opregion_init:
intel_fbdev_set_suspend:
